Distributed Trigger-Based Function Execution in a Mesh Network

ABSTRACT

Various embodiments describe methods, systems, and devices for distributing trigger-based function execution in a mesh network. Various embodiments receive a trigger designation that identifies a plurality of preestablished triggers used to initiate an action controlling an operation associated with a client device connected to the mesh network. A trigger subscription may be transmitted that causes hardware associated with each of the plurality of nodes to be configured to detect and report when any one of the plurality of preestablished triggers is detected by any one of the plurality of nodes, wherein the trigger subscription includes an update to a trigger list that identifies a designated node among the plurality of nodes that is configured to execute application logic for initiating at least one action controlling the operation associated with the client device connected to the mesh network, wherein the client device is remote from the designated node.

RELATED APPLICATIONS

This application is a Divisional of U.S. Non Provisional patentapplication Ser. No. 16/592,716, entitled “Distributed Trigger-BasedFunction Execution in a Mesh Network” filed Oct. 3, 2019, the entirecontents of which is hereby incorporated by reference for all purposes.

BACKGROUND

A mesh network is a local network topology in which the infrastructurenodes (e.g., bridges, switches, and other infrastructure devices)connect directly, dynamically, and non-hierarchically to as many othernodes as possible and cooperate with one another to efficiently routedata from/to client devices (e.g., smart phones, tablets, laptop/desktopcomputers, smart appliances, security systems, game/entertainmentsystems, and other devices configured to connect to a mesh network).Every node in a mesh network is generally configured to handle all thesame tasks and can participate in the relay of information, whichcreates a lack of dependency on any one node. Also, this contributes tofault-tolerance and reduced maintenance costs. However, having toconfigure all the nodes to handle every task may be inefficient,overburdening some nodes that do not need to support all the sameoperations and/or data as every other node.

SUMMARY

Various embodiments describe methods, systems and devices fordistributing trigger-based function execution in a mesh network. Variousembodiments include detecting a trigger at a node and determiningwhether the detected trigger matches one of a plurality of networkevents included in a trigger list accessible to the detecting node. Inaddition, the embodiments include determining whether a node associatedwith the detected trigger is available in response to determining thedetected trigger matches one of the plurality of network events includedin the trigger list. The node associated with the detected trigger (alsoreferred to as a designated node) may be configured to executeapplication logic for initiating at least one action from the meshnetwork in response to the detected trigger being detected. A triggerdetection indicator associated with the detected trigger may betransmitted in response to determining the node associated with thedetected trigger is a node other than the detecting node that isavailable.

In some embodiments, application logic for generating the triggerdetection indicator may be generated in response determining the nodeassociated with the detected trigger is the detecting node. In addition,application logic associated with the detected trigger may be downloadedin response to determining no node is associated with the detectedtrigger or the node associated with the detected trigger is notavailable. Thereafter, the downloaded application logic for generatingthe trigger detection indicator. The trigger list may be updated inresponse to downloading the application logic. An updated trigger listmay be transmitted to other nodes in the mesh network in response todownloading the application logic associated with the detected trigger.One or more updates to the trigger list may be synchronized with othernodes in the mesh network.

In various embodiments, a trigger designation may be received, where thetrigger designation identifies at least one of a plurality ofpreestablished triggers used to initiate at least one action from themesh network. In addition, a trigger subscription may be transmitted toa node of the mesh network, which trigger subscription is configured tocause hardware associated with at least one node within the mesh networkto detect and report when the at least one of the plurality ofpreestablished triggers occurs. The trigger subscription may include anupdate to a trigger list that identifies a designated node configured toexecute application logic for initiating at least one action from themesh network. The designated node within the mesh network designated tohandle operations for initiating the at least one action for inclusionin the update to the trigger list may be determined. In addition, thetrigger subscription may be updated to include the update to the triggerlist. Application logic associated with the at least one of theplurality of preestablished triggers may be transmitted to thedesignated node within the mesh network. The application logic may beconfigured to be initiated in response to receipt of an indication thatthe trigger was detected. A task initiation may be received in responseto the at least one of the plurality of preestablished triggers beingdetected. Application logic for initiating at least one action from themesh network may be executed. The at least one action may be responsiveto at least one of the plurality of preestablished triggers beingdetected.

Further aspects include a mesh network node including a processorconfigured with processor-executable instructions to perform operationsof any of the methods summarized above. Further aspects include anon-transitory processor-readable storage medium having stored thereonprocessor-executable software instructions configured to cause aprocessor of a mesh network node to perform operations of any of themethods summarized above. Further aspects include a processing devicefor use in a mesh network node and configured to perform operations ofany of the methods summarized above.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated herein and constitutepart of this specification, illustrate exemplary embodiments, andtogether with the general description given above and the detaileddescription given below, serve to explain the features of variousembodiments.

FIG. 1 is a schematic diagram of a mesh network 100 configured to handledistributed trigger-based function execution suitable for use withvarious embodiments.

FIG. 2 is a component block diagram illustrating a node in a meshnetwork that may be used to implement various embodiments.

FIG. 3 is a communication message flow diagram of a trigger subscriptionand execution process suitable for use with various embodiments.

FIG. 4 is a communication message flow diagram of an access pointforwarding process suitable for use with various embodiments.

FIG. 5 is a communication message flow diagram of a trigger subscriptionand execution process suitable for use with various embodiments.

FIG. 6 is a communication message flow diagram of a trigger subscriptionand execution process suitable for use with various embodiments.

FIG. 7 is a communication message flow diagram of a trigger subscriptionand execution process suitable for use with various embodiments.

FIG. 8 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 9 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 10 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 11 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 12 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 13 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 14 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 15 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 16 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 17 is a process flow diagram illustrating an embodiment method fordistributing trigger-based function execution in a mesh network suitablefor use with various embodiments.

FIG. 18 is a component diagram of a computing device in the form of anode configured to operate in a mesh network, suitable for use withvarious embodiments.

FIG. 19 is a component diagram of an example client device in the formof a smartphone, suitable for use with the various embodiments.

FIG. 20 is a component diagram of an example server suitable for usewith the various embodiments.

DETAILED DESCRIPTION

The various embodiments will be described in detail with reference tothe accompanying drawings. Wherever possible, the same reference numberswill be used throughout the drawings to refer to the same or like parts.References made to particular examples and implementations are forillustrative purposes, and are not intended to limit the scope of theinvention or the claims.

In overview, the various embodiments include methods and computingdevices configured to implement the methods for distributingtrigger-based function execution in a mesh network. Various embodimentsprovide a distributed application system that may enable a single nodein a mesh network, such as in a home or business, or even a cloud-basednode, such as a backend server, to handle or respond to network events.To distribute the applications that may be handled by the system, eachnode in the mesh network, or hardware associated therewith, may beconfigured to monitor for and report when particular triggers occur. Alist of those triggers (i.e., a trigger list) may be maintained at thenodes, along with an identification of a designated node (e.g., insidethe mesh network or in the cloud), for each trigger, that should benotified once the trigger is detected. A third-party application,maintained on and run from the designated node may be configured toinitiate one or more tasks in response to being notified that thetrigger was detected by any node in the mesh network. In this way, allthe nodes in the mesh network do not need to be configured to processand deal with all the events associated with triggers. Also, the meshnetwork need not be limited by the capabilities of its weakest node.Further, the various embodiments may allow third-party applicationdevelopers to select from a series of designated triggers to which theirapplication logic will be bound. Third-party developers would no longerneed to know specifics about the hardware topology of individual meshnetworks, which may enable those third-party developers to more rapidlydeploy software into a customer's home, business, or other premises.Using a common command plane, the various embodiments may enable new andcustomized network controls that introduce new features to the homeautomation markets.

As used herein, the term “trigger” refers to an input associated with adetectable network event, such that detection of the network event maybe used to automatically initiate operations of application logicassociated with the trigger. Detection of a trigger, such as changes indata, shifts in system state, or actions/inputs by/from users, under theappropriate circumstances, may be used to execute application logic forinitiating a predefined task. Triggers may include a presence of packetstreams or a packet stream of particular content, a user input, clientdevice state changes, etc.

As used herein, the term “node” refers to a mesh network device orcomponent that acts as a router to process and/or forward data packetsto other nodes or acts as an access point for a client to access aremote server or network. A node may include a radio transmitter thatfunctions in the same way as a wireless router, using Wi-Fi, Zigbee, andother standards to communicate with client devices and with each other.In addition, the node(s) may use wired connections for communicating.Nodes may be programmed with application logic (i.e., software) thattells them how to interact within the larger network and how to handlenetwork events and/or execute customized third-party applications. Eachnode may be a distributed architecture router that includes a pluralityof node components that are coupled to each other via communicationlinks and/or a network topology. Each of these node components mayinclude a control plane component, a forwarding plane component, orboth.

As used herein, the term “computing device” is used to refer to any oneor all of personal computers, laptop computers, rack mounted computers,routers, cellular telephones, smart phones, smart watches, smartbuttons, smart appliances, personal or mobile multi-media players,personal data assistants (PDAs), tablet computers, smart books, palm-topcomputers, desk-top computers, wireless electronic mail receivers,cellular telephones, wireless gaming controllers, streaming mediaplayers (such as, ROKU®), smart televisions, DVRs, modems, satellite orcable set top boxes, smart remote control devices (i.e., televisionremote controls with sufficient processing capabilities), and similarelectronic devices which include a programmable processor and memory andcircuitry for providing the functionality described herein.

The various embodiments are described herein using the term “server” torefer to any computing device capable of functioning as a server, suchas communications server, a name server, a master exchange server, webserver, mail server, document server, database server, route server,content server, or any other type of server. A server may be a dedicatedcomputing device or a computing device including a server module (e.g.,running an application which may cause the computing device to operateas a server). A server module (e.g., server application) may be a fullfunction server module, or a light or secondary server module (e.g.,light or secondary server application) that is configured to providesynchronization services among the dynamic databases on computingdevices. A light server or secondary server may be a slimmed-downversion of server-type functionality that can be implemented on acomputing device thereby enabling it to function as a server only to theextent necessary to provide the functionality described herein.

FIG. 1 illustrates a schematic diagram of a mesh network 100 configuredto handle distributed trigger-based function execution in accordancewith various embodiments. The mesh network 100 includes base stations orrouters that act as nodes 110 a, 110 b, 110 c, (i.e., Node 1, Node 2,and Node 3, respectively) that exchange information continuously aboutnetwork conditions with all adjacent nodes 110 a, 110 b, 110 c acrossthe mesh network 100 and optionally to a cloud-based backend 150. Thisallows nodes 110 a, 110 b, 110 c that aren't sending or receiving datato each other to still be aware of the presence of each other node inthe mesh network. In some cases, a node might send a packet of data tojust one other node; in others, a weak signal and other factors mightroute the packet through other nodes to reach a designated node.

The nodes 110 a, 110 b, 110 c may be configured to communicate with oneanother through wireless signals 130 and/or through wired connections135. Also, one or more of the nodes 110 a, 110 b (e.g., Node 1 and Node2) may be configured to communicate with the cloud-based backend 150through a connection 145. Data and applications associated with the meshnetwork 100 may be stored in firmware on one or more of the nodes 110 a,110 b, 110 c or even at a cloud-based node 155 of the cloud-basedbackend 150. When a node acts as a wired access point (AP) to reach theInternet that node may be referred to as a backhaul node. Small wirelessmesh networks, as illustrated in FIG. 1 , handle backhaul withoutneeding special configurations. In larger mesh networks, like those fortowns, cities, large venues, and commercial/industrial facilities,certain nodes need to be dedicated as backhaul nodes. The other nodesmay connect to the internet to transmit or receive data using one of thebackhaul nodes.

Some nodes 110 a, 110 b, 110 c may have single-band-at-a-time radios,and may behave more as smart extensions. Alternatively, or additionally,some nodes 110 a, 110 b, 110 c may have radios supporting two or eventhree frequency bands, enabling mesh-dedicated bands to intra-node data,switching channels to reduce congestion, or mixing client data and“backhaul” data on the same channel. The mesh network 100 may programmedto automatically reconfigure itself when a node is lost or added to thenetwork, in accordance with various embodiments.

The mesh network 100 may be configured to connect to one or more clientdevices, such as a cell phone 121, a smart-television 122, a localcomputing device 123, a smart-lighting system 124, and a laptop computer125. The client devices (e.g., 121, 122, 123, 124, 125) may beconfigured to communicate with the nodes 110 a, 110 b, 110 c alsothrough wireless signals 130 and/or through wired connections 135.

In accordance with various embodiments, individual ones of the nodes 110a, 110 b, 110 c may store, maintain, and execute applications differentfrom the applications stored, maintained and executed by other nodes 110a, 110 b, 110 c in the mesh network 100. Some of those applications mayuse anonymous functions (e.g., a lambda function) that includeapplication logic for initiating a task programmed to automaticallyoccur in response to an associated trigger being detected by any of thenodes in the mesh network 100. The anonymous functions may be athird-party application that bind a designated node (e.g., Node 3) oreven a server 155 in the cloud-based backend 150 to execute applicationlogic for initiating a task in response to a particular trigger beingdetected by any node 110 a, 110 b, 110 c within the mesh network 100.The anonymous function may include what is referred to herein as a“trigger subscription,” which configures the nodes 110 a, 110 b, 110 cof the mesh network 100, or hardware connected to those nodes, to reporteach time a trigger included on a trigger list is detected. The triggersubscription may also identify the designated node to which the triggerdetection should be reported.

The trigger subscription may include a trigger list or update to anexisting trigger list, which gets distributed to, stored at, and used bythe other nodes in the mesh network to inform those nodes about networkevents (i.e., triggers) for which they should monitor and report back tothe designated node. The trigger list may include a plurality oftriggers. In addition, the trigger list may identify a particular nodeor nodes associated with each trigger (i.e., a designated node) thatshould be advised when that trigger occurs. In this way, when a node 110a, 110 b, 110 c within the mesh network 100 detects that a triggerincluded on the trigger list has been detected, that node may report theevent to the designated node. The designated node may then execute theapplication logic associated with the trigger subscription that mayinitiate a task or generate a task initiation message that will in-turninitiate the task.

Any node 110 a, 110 b, 110 c in the mesh network 100 may be thedesignated node. The designation may be in response to an earlierrequest transmitted from that node for the trigger subscription or to beso designated. Alternatively, the designated node may be the first nodein the mesh network 100 to receive and/or approve the download of thetrigger subscription. The designated node may also be the only nodeconfigured as an access point (AP) to the internet or with sufficientdownload/upload speeds to handle transactions associated with thetrigger subscription. As a further alternative, the designated node maynot reside within the mesh network, but rather may reside in a remotenetwork such as the cloud-based backend 150.

For example, the anonymous function may be part of a home automationprogram that turns on one or more lights (i.e., initiates a task), usingthe smart-lighting system 124, in response to a client device, such asthe cell phone 121 operated by a client 5, connecting (i.e., anassociated trigger) to the mesh network 100 via any node 110 a, 110 b,110 c in the mesh network. As another example, the home automationprogram may turn on one or more lights in response to a client device,such as a cell phone 121 operated by a client 5 connecting to theinternet or the cloud-based backend 150. Thus, in this home automationexample, the connection or attempted connection by the cell phone 121 toa communication access point may be a trigger T1 included on a triggerlist. In this way, Node 1 (i.e., node 110 a) may detect when the cellphone 121 connects to Node 1. Node 1, maintaining the trigger list, maybe configured to report the trigger T1, if/when detected, to Node 3(i.e., node 110 c). Node 3 is connected to the smart-lighting system 124and may initiate the task. Once notified that the trigger T1 wasdetected, Node 3 may execute application logic for generating a taskinitiation signal that causes the smart-lighting system 124 to turn onone or more lights. While Node 1 does not perform the task of turning onthe lights, nor does Node 1 store or maintain the home lightingapplication, Node 1 does maintain the trigger list and notifies thedesignated Node 3 upon the detection of the trigger T1.

FIG. 2 illustrates a schematic diagram of a node 110 (any of nodes 110a, 110 b, or 110 c) configured for distributing trigger-based functionexecution in a mesh network. In various embodiments, the node 110 mayinclude one or more memory storage devices 205 and one or moreprocessors 210.

The node 110 may be configured by machine-readable instructions (MRI)215. The MRI 215 may include one or more instruction modules. Theinstruction modules may include computer program modules. Theinstruction modules may include one or more of a trigger detectionmodule 220, a trigger matching module 222, an available associated nodeidentifier module 224, a trigger detection indicator transmission module226, an application logic execution module 228, an application logicdownload and installation module 230, a trigger list updating module232, an updated trigger list transmission module 234, a trigger listsynchronization module 236, or other instruction modules.

The trigger detection module 220 may be configured to detect networkevents associated with one or more triggers included on a trigger list.For example, the trigger list may include network topology events, suchas when a node and/or client device leaves the network, when a nodeand/or client device joins the network, when a client device joins thenetwork using the guest passphrase, or when a passphrase of a clientdevice expires while that client device is currently connected. Thetrigger list may additionally, or alternatively, include particularapplication streams that may be detected, like when Roku TV® beginsstreaming Netflix®, when a surveillance camera starts uploading video,when a speaker begins streaming from a music service (e.g., Spotify®,Pandora®, or Amazon® Music), or when a particular mobile computingdevice (e.g., a; child's cell phone) has streamed more than 3 hours ofvideo. As a further alternative, or additionally, the trigger list mayinclude events associated with client devices accessing particularinternet domains, such as pornographic web sites, malicious websiteswith known malware, or when a client device attempts to access aparticular category of website (e.g., an advertisement website) morethan a threshold number of times (e.g., ≥3×). This list of possibletrigger events are merely illustrative and not meant to limit the scopeof the disclosed embodiments. Additional trigger events within the scopeof the disclosed embodiments are contemplated.

Once a trigger is detected, the trigger detection module 220 mayinitiate the transmission of an indication of such to the triggermatching module 222.

The trigger matching module 222 may be configured to determine whetherthe detected trigger matches one of a plurality of network eventsincluded in a trigger list accessible to the detecting node.

The available node identifier module 224 may be configured to determinewhether a node associated with the detected trigger is available inresponse to determining the detected trigger matches one of theplurality of network events included in the trigger list. Initially, theavailable node identifier module 224 may access the trigger list todetermine what node is designated as the node to which the triggerdetection should be reported. The designated node associated with thedetected trigger may be configured to execute application logic forinitiating at least one action from the mesh network in response to thedetected trigger being detected. The available node identifier module224 may determine whether the designated node is available afteridentifying the designated node from the trigger list. If available, thedesignated node may be targeted for notification regarding the triggerdetection. Otherwise, either an alternate node may be considered, ifprovided in the trigger list or as a default designation, or anindication may be registered that no node is associated with thedetected trigger or that the node associated with the detected triggeris not available, as determined.

The trigger detection indicator transmission module 226 may beconfigured to transmit, to the designated node, a trigger detectionindicator associated with the detected trigger in response todetermining the node associated with the detected trigger is a nodeother than the detecting node and is available.

The application logic execution module 228 may be configured to executeapplication logic for generating a task initiation in responsedetermining the node associated with the detected trigger is thedetecting node. Various tasks (i.e., actions) may be initiated by theapplication logic execution module 228. For example, the tasks mayinclude network topology actions, such as steering or locking clientdevice to use a particular node, removing a temporary or permanentpassword or passphrase, revoking network privileges from a clientdevice, or sending a password or passphrase to a client device. Thetasks may additionally, or alternatively, include particular applicationstream actions. For example, the tasks may include blocking anapplication stream from a streaming service, like Netflix®, from aparticular client device, like a child's tablet or cell phone,prioritizing a particular application stream, like HBO® for a Roku TV®,and/or throttling (i.e., slowing) a particular application stream, suchas YouTube® for a child's mobile device. As a further alternative, oradditionally, the tasks may relate to how or when client devices accessparticular internet domains. For example, the tasks may include blockingaccess to various forms of “Entertainment” from a particular clientdevice, like a child's cell phone, blocking advertisements targeted to aclient device, pausing an internet to a client device, and/orredirecting internet requests to a website with customized messaging,for example, “Come to dinner!” for household residents.

The application logic download and installation module 230 may beconfigured to download application logic associated with triggersubscriptions. The download and installation may be part of an initialmesh network configuration, configuration of a designated node, or inresponse to determining no node is associated with the detected triggeror the node associated with the detected trigger is not available.

The trigger list updating module 232 may be configured to store a newtrigger list or update an existing trigger list in response todownloading the application logic.

The updated trigger list transmission module 234 may be configured totransmit, to other nodes 110 (i.e., 110 a, 110 b) in the mesh network100, an updated trigger list. The updated trigger list may betransmitted as part of an initial mesh network configuration,configuration of a designated node, or in response to downloading theapplication logic associated with the trigger subscription or detectedtrigger. The updated trigger list transmission module 234 may use atransceiver 250 of the node 110, which is configured to transmit updatedtrigger lists to other nodes and/or to the cloud-based backend (e.g.,150).

The trigger list synchronization module 236 may be configured tosynchronize one or more updates to the trigger list with other nodes inthe mesh network. As with the updated trigger list transmission module234, the trigger list synchronization module 236 may use the transceiver250 to transmit updated trigger lists to other nodes and/or to thecloud-based backend.

FIG. 3 illustrates components and communication message flows in asystem 300 configured to distribute trigger-based function execution ina mesh network in accordance with an embodiment. In the exampleillustrated in FIG. 3 , the system 300 is implementing and executing atrigger subscription. The system 300 includes a plurality of nodes 110a, 110 b, 110 c (e.g., Node 1, Node 2, and Node 3, respectively) in themesh network 100, the cloud-based backend 150, and two client devices,namely the local computing device 123 and the smart-lighting system 124.

In message 310, the cloud-based backend 150 may broadcast or send atrigger subscription to a designated node, for example, as illustratedin FIG. 3 Node 3 110 c. The trigger subscription message 310 may be ananonymous function that includes application logic for initiating a taskprogrammed to automatically occur in response to detection of anassociated trigger. For example, the trigger subscription message 310may include a home automation function (i.e., an application logic) thatturns on one or more lights (i.e., initiates a task), using thesmart-lighting system 124 in the mesh network 100, in response to aclient device connecting to the internet (i.e., a detected trigger). Theanonymous function, may bind Node 3 110 c to execute application logicfor getting the smart-lighting system 124 to turn on one or more lightsonce any node in the mesh network reports that a client device hasconnected to the internet.

Once the designated node downloads the trigger subscription, thedesignated node may distribute the trigger list or trigger list updateto the other nodes. Also, if one or more nodes are added to the meshnetwork 100, the designated node may distribute the trigger list ortrigger list update to those added nodes, if appropriate.

In messages 321, 322, Nodes 1 and 2 (i.e., 110 a, 110 b), respectively,may send handshake messages to Node 3 (i.e., the designated node 110 c)for negotiating a secure connection there between. The messages 321, 322may include public key authentication (i.e., “Pub key”) to ensure securecommunications. In block 325, in response to receiving the message(e.g., 321, 322), a processor in Node 3 110 c may verify (i.e.,authenticate) the public key using preconfigured mesh network settingsand/or information provided from the cloud-based backend 150 inconnection with the trigger subscription message 310. Once the publickey is verified, Node 3 110 c may return corresponding handshakemessages 331, 332 back to Node 1 110 a, which may include network andlease information (e.g., an IP address, etc.) that enables securecommunications between the two nodes Node 1 and Node 3 (110 a, 110 c).This secure handshake procedure (i.e., messages 321/331 and 322/332) maybe performed each time the nodes 110 a, 110 b, 110 c establishconnections with one another, since the nodes 110 a, 110 b, 110 c neednot maintain persistent connections between one another. The handshakeprocedure may use hypertext transfer protocol secure (HTTPS), transportlayer security (TLS), or other secure messaging protocol as informed bythe certificates and chain of trust installed when the mesh network isconfigured.

In message 335, Node 3 110 c may transmit to Node 1 110 a and Node 2 110b a trigger subscription that configures Node 1 110 a and Node 2 110 b,or hardware connected to those nodes, to report each time a triggerincluded on a trigger list is detected.

In block 340, Node 1 110 a and Node 2 110 b register the new triggersubscription (i.e., “Trigger Subscription”), which configures Node 1 110a and Node 2 110 b 2 to report if/when any trigger on the trigger listis detected. Node 1 110 a and Node 2 110 b may not be configured todetect every trigger included on the trigger list, but the nodes will beready to report those triggers they are configured to detect.

As illustrated in FIG. 3 , in block 342, Node 1 110 a detects a newconnection by a client device (i.e., a “New Connect”). One of skill inthe art may understand that Node 2 110 b may also detect a newconnection by a client device.

In block 345, a processor in Node 1 110 a may determine whether the NewConnect event (i.e., the detected trigger) matches one of a plurality ofnetwork events included in the trigger list. In response to determiningthe detected trigger matches one of the plurality of network eventsincluded in the trigger list, in block 345 the processor of Node 1 110 amay also determine whether a node associated with the detected triggeris available. The designated node (i.e., Node 3 110 c) associated withthe detected trigger may be configured to execute application logic forinitiating at least one action from the mesh network in response to thedetected trigger being detected.

In message 350, Node 1 110 a may transmit to Node 3 110 c a triggerdetection indicator associated with the detected trigger in response tothe processor in Node 1 1110 a determining the node associated with thedetected trigger is Node 3 110 c and Node 3 110 c is available.

In block 355, the processor in Node 3 110 c may execute applicationlogic for generating a task initiation. In particular, the applicationlogic may generate and transmit the message 360, which includes a taskinitiation signal configured to get the local computing device 123 thatmanages the smart-lighting system 124 to turn the lights on.

In message 365, the local computing device 123 sends an activate/onsignal to the smart-lighting system 124, in response to the localcomputing device 123 receiving the task initiation signal from Node 3110 c. The activate/on signal is configured to turn lights on.

FIG. 4 illustrates components and communication message flows in asystem 400 configured to distribute trigger-based function execution ina mesh network in accordance with an embodiment. In the exampleillustrated in FIG. 4 , the system 400 is illustrated executing atrigger subscription that forwards internet access to a particular AP.The system 400 includes a plurality of nodes 110 a and 110 c (e.g., Node1 and Node 3), the cloud-based backend 150, and one client device, forexample, a cell phone 121. In this example, each node (i.e., Node 1 110a and Node 3 110 c) may act as an access point AP.

In message 410, the cloud-based backend 150 may broadcast or send atrigger subscription to a designated node, which is Node 1 110 a in thisinstance. The trigger subscription message 410 may include applicationlogic that forwards internet access to a particular node, like Node 3110 c, in the mesh network.

In block 415, Node 1 110 a registers the new trigger subscription (i.e.,“Trigger Subpt'n”), which configures Node 1 110 a to not only detectattempts to reach an AP, but also to forward any of those attempts toNode 3 110 c.

In message 420, the cell phone 121 is attempting to contact to an AP(e.g., Node 1 110 a).

In block 425, the processor of Node 1 110 a may determine whether theclient device 121 attempting to reach an AP (i.e., the detected trigger)matches one of a plurality of network events included in the triggerlist. In response to determining the detected trigger matches one of theplurality of network events included in the trigger list, in block 345the processor of Node 1 110 a may also determine whether a nodeassociated with the detected trigger is available. In this instance, thenode associated with the detected trigger is Node 3 110 c. Thus, Node 1110 a, executing application logic associated with the triggersubscription, will initiate actions in response to the detected triggerbeing detected.

In message 430, Node 1 may send a handshake message to Node 3 (i.e., thedesignated node 110 c) for negotiating a secure connection therebetween. In response to receiving the message 430, a processor in Node 3110 c may verify (i.e., authenticate) the public key using preconfiguredmesh network settings. Once the public key is verified, Node 3 mayreturn a corresponding handshake message, in message 435, back to Node 1110 a.

In message 440, the application logic may generate and transmit a taskinitiation signal that forwards AP access, requested by the cell phone121, to Node 3 110 c.

FIG. 5 illustrates components and communication message flows in asystem 500 configured to distribute trigger-based function execution ina mesh network in accordance with an embodiment. In the exampleillustrated in FIG. 5 , the system 500 is illustrated executing atrigger subscription that performs a home automation task when a clientdevice joins the network. The system 500 includes one node 110 b (e.g.,Node 2) that is local, the cloud-based backend 150 that may include acloud-based node (e.g., 155), and two client devices, for example, acell phone 121 and the smart-lighting system 124.

In message 510, a client device, namely the laptop computer 125, maysend one or more rules for creating a trigger subscription (i.e., “Rule:Trigger Phone connect=Flash Lights”). In this instance, the rules aredesigned for a home automation system to flash lights on and off (e.g.,in a room a parent is likely to be, like the master bedroom or a homeoffice) in response to a particular client device 121 (e.g., a child'scell phone) connects with the mesh network. This type of routine may beuseful for letting occupants of the house know when someone carrying adevice that connects to the network has arrived home or when that devicehas been turned on.

In message 515, the cloud-based backend 150 may broadcast or send atrigger subscription to a designated node, which is Node 2 110 b in thisinstance. The trigger subscription message 515 may include applicationlogic, which activates a home automation function that flashes lights isa set of designated rooms with a smart-lighting system 124.

In block 520, Node 2 110 b registers the new trigger subscription (i.e.,“Trigger Subpt'n”), which configures Node 2 110 b to not only detectwhen the cell phone 121 initiates a connection to the mesh network, butalso to allow the network connection and forward a task initiationmessage that flashes the lights.

In message 522, the cell phone 121 is initiating a connection to thehome mesh network.

In block 525, the processor of Node 2 110 b may determine whether theclient device 121 attempting to connect to the home mesh network (i.e.,the detected trigger) matches one of a plurality of network eventsincluded in the trigger list. In response to determining the detectedtrigger matches one of the plurality of network events included in thetrigger list, in block 535 the processor of Node 2 110 b may alsodetermine whether a node associated with the detected trigger isavailable. In this instance, the node associated with the detectedtrigger is a cloud-based node in the cloud-based backend 150. Thus, Node2 110 b, executing application logic associated with the triggersubscription, will initiate actions in response to the detected triggerbeing detected. Namely, a processor of Node 2 110 b will transmitmessage 531 to the cell phone 121, which allow the connection. Inaddition, a processor of Node 2 110 b will also transmit a triggerdetection indicator, as message 532 to the cloud-based node in thecloud-based backend 150.

In block 535, the processor in the cloud-based node in the cloud-basedbackend 150 may execute application logic for generating a taskinitiation. In particular, the application logic may generate andtransmit the message 540, which includes a task initiation signalconfigured to make the smart-lighting system 124 flash lights or atleast flash particular lights, like those in one or more designatedrooms.

FIG. 6 illustrates components and communication message flows in asystem 600 configured to distribute trigger-based function execution ina mesh network in accordance with an embodiment. In the exampleillustrated in FIG. 6 , the system 600 is illustrated executing atrigger subscription that performs a home automation task when a videostreams is initiated. The system 600 includes one node 110 c (e.g., Node3), the cloud-based backend 150 that may include a cloud-based node(e.g., 155), and four client devices, for example, a cell phone 121, thesmart-lighting system 124, an online media player 126, and a mediaservice provider 127.

In message 610, a client device, namely the cell phone 121, may send oneor more rules for creating a trigger subscription (i.e., “Rule: TriggerOMP online connect=Lights Off”). In this instance, the rules aredesigned for a home automation system to turn lights off (e.g., in amedia room) in response to an online media player (OMP) connecting tothe mesh network and/or attempting to get online Internet access to themedia service provider. This type of routine may be useful for turningoff or dimming lights when someone starts streaming or trying to streama movie, program, or other streaming video entertainment.

In message 615, the cloud-based backend 150 may broadcast or send atrigger subscription to a designated node, which is Node 3 110 c in thisinstance. The trigger subscription message 615 may include applicationlogic, which activates a home automation function that turns down or offlights is a designated room with a smart-lighting system 124, inaddition to enabling the necessary internet access to the media serviceprovider 127.

In block 620, Node 3 110 c registers the new trigger subscription (i.e.,“Trigger Subcrpt'n”), which configures Node 3 110 c to not only detectwhen the online media player 126 initiates an online connection oraccess to the internet, but also to allow the internet connection andforward a task initiation message to get the lights to turn off, asprogrammed in the trigger subscription rules.

In message 622, the online media player 126 initiates an onlineconnection to gain access to the internet.

In block 625, the processor of Node 3 110 c may determine whether theonline media player 126 attempting to connect to the internet (i.e., thedetected trigger) matches one of a plurality of network events includedin the trigger list. In response to determining the detected triggermatches one of the plurality of network events included in the triggerlist, in block 625 the processor of Node 3 110 c may also determinewhether a node associated with the detected trigger is available. Inthis instance, the node associated with the detected trigger is acloud-based node in the cloud-based backend 150. Thus, Node 3 110 c,executing application logic associated with the trigger subscription,may initiate actions in response to the detected trigger being detected.Namely, a processor of Node 3 110 c may transmit a trigger detectionindicator, as message 631 to the cloud-based node in the cloud-basedbackend 150. In addition, a processor of Node 3 110 c may also transmitmessage 632 to the media service provider 127, which allows theconnection and subsequent streaming of media from the media serviceprovider 127.

In block 640, the processor in the cloud-based node in the cloud-basedbackend 150 may execute application logic for generating a taskinitiation. In particular, the application logic may generate andtransmit the message 645, which includes a task initiation signalconfigured to make the smart-lighting system 124 turn off one or moredesignated lights.

FIG. 7 illustrates components and communication message flows in asystem 700 configured to distribute trigger-based function execution ina mesh network in accordance with an embodiment. In the exampleillustrated in FIG. 7 , the system 700 is illustrated executing atrigger subscription that performs coordinated home automation taskswhen a smart button is activated. The system 700 includes one node 110 b(e.g., Node 2), the cloud-based backend 150 that may include acloud-based node (e.g., 155), and five client devices, for example, twocell phones 121, the smart-lighting system 124, the media serviceprovider 127, and a smart button 128.

In message 710, a client device, namely the first (“1”) cell phone 121,may send one or more rules for creating a trigger subscription (i.e.,“Rule: Trigger Smart button activation=Various”). In this instance, therules are designed for a series of actions to be initiated by activationof a programmed smart button. In particular, all network connections tothe mesh network are momentarily dropped, a home automation system turnslights on (e.g., in a kitchen/dining room), starts streaming music froma media service provider (e.g., dinner music) and redirects droppedclient devices, like the second (“2”) cell phone 121, in response toactivation of the smart button 128. This type of routine may be usefulfor letting the kids know dinner is ready and setting the mood in thedining room or kitchen.

In message 715, the cloud-based backend 150 may broadcast or send atrigger subscription to a designated node, which is Node 2 110 b in thisinstance. The trigger subscription message 715 may include applicationlogic, which activates a home automation function that turns lights onis a designated room with a smart-lighting system 124, enables thenecessary internet access to the media service provider 127, andredirects other client devices, like the second cell phone 121 to a webaddress that displays a message, for example, “Dinner is ready!”

In block 720, Node 2 110 b registers the new trigger subscription (i.e.,“Trigger Subcrpt'n”), which configures Node 2 110 b to not only detectthe activation of the smart button 128, but also sends a task initiationmessage that tells the cloud-based node to starts the various actionsassociated with this trigger subscription.

Message 722 indicates that the smart button 128 has been activated.

In block 725, the processor of Node 2 110 b may determine whether thesmart button 128 being activated (i.e., the detected trigger) matchesone of a plurality of network events included in the trigger list. Inresponse to determining the detected trigger matches one of theplurality of network events included in the trigger list, in block 725the processor of Node 2 110 b may also determine whether a nodeassociated with the detected trigger is available. In this instance, thenode associated with the detected trigger is a cloud-based node in thecloud-based backend 150. Thus, Node 2 110 b, executing application logicassociated with the trigger subscription, will initiate actions inresponse to the detected trigger being detected. Namely, a processor ofNode 2 110 b may transmit a trigger detection indicator, as message 730to the cloud-based node in the cloud-based backend 150.

In block 735, the processor in the cloud-based node in the cloud-basedbackend 150 may execute application logic for generating a plurality oftask initiations. In particular, the application logic may generate andtransmit the message 740, which causes Node 2 110 b to drop connectionsto any connected client devices (i.e., cell phone 121) and to redirectany client devices (i.e., cell phones 121) that attempt to reconnect toa designated web site that displays a message. This message may be, forexample, “Dinner is ready!”. In addition, the application logic maygenerate and transmit the message 745, which includes a task initiationsignal configured to make the smart-lighting system 124 turn on one ormore designated lights, such as the dining room lights. Further, theapplication logic may generate and transmit the message 750, whichincludes a task initiation signal configured to make the media serviceprovider 127 start streaming a particular music playlist.

Having lost a connection to the local mesh network, the second cellphone 121 may transmit a message 755, which includes a request toconnect to the network and/or an attempt to reach an AP. The applicationlogic of the trigger subscription registered at Node 2 110 b may thengenerate and transmit the message 760, which redirects the second cellphone 121 to a designated web site that displays a message.

FIG. 8 illustrates an embodiment method 800 for distributingtrigger-based function execution in a mesh network, in accordance withvarious embodiments. With reference to FIGS. 1-8 , the operations of themethod 800 may be performed by a processor (e.g., 210) of a node (e.g.,110 a-c, 155), computing device (e.g., 121-128), or server associatedwith a mesh network (e.g., 100).

In block 802, the processor of a detecting node (e.g., Nodes 1-3, 110a-c) in the mesh network may detect a trigger. The trigger maycorrespond to an input associated with a detectable network event.

In block 804, the processor of the detecting node (e.g., Nodes 1-3, 110a-c) may determine whether the detected trigger matches one of aplurality of network events included in a trigger list accessible to thedetecting node.

In block 806, the processor of the detecting node (e.g., Nodes 1-3, 110a-c) may determine whether a node associated (i.e., designated node)with the detected trigger is available in response to determining, inblock 804, that the detected trigger matches one of the plurality ofnetwork events included in the trigger list. The node associated withthe detected trigger may be configured to execute application logic forinitiating at least one action from the mesh network in response to thedetected trigger being detected.

In block 808, the processor of the detecting node (e.g., Nodes 1-3, 110a-c) may transmit, to the available designated node, a trigger detectionindicator associated with the detected trigger in response todetermining, in block 806, that the node associated with the detectedtrigger is a node other than the detecting node that is available.

In some embodiments, the processor of the detecting node (e.g., Nodes1-3, 110 a-c) may repeat any or all of the operations in blocks 802through 808 to repeatedly or continuously detect and report triggers andtransmit a trigger detection indicator associated with the detectedtrigger in response to determining the node associated with the detectedtrigger is a node other than the detecting node that is available.

FIG. 9 illustrates an embodiment method 900 of example operations thatmay be performed as part of the method 800 (FIG. 8 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-9 , the operations of method 900 may be performed by a processor(e.g., 210) of a node (e.g., 110 a-c, 155), computing device (e.g.,121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 806 (FIG. 8 ),the processor may determine in determination block 906 whether a nodeassociated with the detected trigger is the detecting node. In responseto the processor of the detecting node determining that the nodeassociated with the detected trigger is the detecting node (i.e.,determination block 906=“Yes”), the processor of the detecting node mayexecute application logic for generating a task initiation in block 908.Following the operations of block 908, the processor of the detectingnode (i.e., designated node) may perform the operations of block 802(FIG. 8 ). In response to the processor of the detecting node (e.g.,Nodes 1-3, 110 a-c) determining the node associated with the detectedtrigger is not the detecting node (i.e., determination block 906=“No”),the processor may follow the operations of block 808 (FIG. 8 ).

FIG. 10 illustrates an embodiment method 1000 of example operations thatmay be performed as part of the method 800 (FIG. 8 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-10 , the operations of method 1000 may be performed by aprocessor (e.g., 210) of a node (e.g., 110, 155), computing device(e.g., 121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 806 (FIG. 8 ),the processor of the detecting node (e.g., Nodes 1-3, 110 a-c) maydetermine in determination block 1006 whether no node is associated withthe detected trigger or whether any node is available. In response tothe processor of the detecting node (e.g., Nodes 1-3, 110 a-c)determining that no node is associated with the detected trigger or thatno node is available (i.e., determination block 1006=“Yes”), theprocessor of the detecting node (e.g., Nodes 1-3, 110 a-c) may downloadin block 1008 application logic associated with the detected trigger.Then, in block 1010, the processor of the detecting node (e.g., Nodes1-3, 110 a-c) may execute the downloaded application logic forgenerating the task initiation. Following the operations of block 1010,the processor of the detecting node (e.g., Nodes 1-3, 110 a-c) mayfollow the operations of block 802 (FIG. 8 ). In response to theprocessor of the detecting node (e.g., Nodes 1-3, 110 a-c) determining anode is associated with the detected trigger and that node is available(i.e., determination block 1006=“No”), the processor of the detectingnode (e.g., Nodes 1-3, 110 a-c) may follow the operations of block 808(FIG. 8 ).

FIG. 11 illustrates an embodiment method 1100 of example operations thatmay be performed as part of the method 1100 (FIG. 11 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-11 , the operations of method 1100 may be performed by aprocessor (e.g., 210) of a node (e.g., 110 a-c, 155), computing device(e.g., 121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 1010 (FIG. 10), the processor of a node (e.g., 110 a-c, 155), may update the triggerlist in response to downloading the application logic. Following theoperations of block 1110, the processor may follow the operations ofblock 802 (FIG. 8 ).

FIG. 12 illustrates an embodiment method 1200 of example operations thatmay be performed as part of the method 1200 (FIG. 12 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-12 , the operations of method 1200 may be performed by aprocessor (e.g., 210) of a node (e.g., 110 a-c, 155), computing device(e.g., 121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 1010 (FIG. 10), the processor may in block 1210 transmit to other nodes in the meshnetwork an updated trigger list in response to downloading theapplication logic associated with the detected trigger. Following theoperations of block 1210, the processor may follow the operations ofblock 802 (FIG. 8 ).

FIG. 13 illustrates an embodiment method 1300 of example operations thatmay be performed as part of the methods 800 (FIG. 8 ), 900 (FIG. 9 ), or1000 (FIG. 10 ) for distributing trigger-based function execution in amesh network. With reference to FIGS. 1-13 , the operations of method1300 may be performed by a processor (e.g., 210) of a node (e.g., 110a-c, 155), computing device (e.g., 121-128), or server associated with amesh network (e.g., 100).

In some implementations following the operations of block 808 (FIG. 8 ),block 908 (FIG. 9 ), or block 1010 (FIG. 10 ), the processor may inblock 1310 synchronize, with other nodes in the mesh network, one ormore updates to the trigger list. Following the operations of block1310, the processor may follow the operations of block 802 (FIG. 8 ).

FIG. 14 illustrates an embodiment method 1400 for distributingtrigger-based function execution in a mesh network, in accordance withvarious embodiments. With reference to FIGS. 1-14 , the operations ofthe method 1400 may be performed by a processor (e.g., 210) of a node(e.g., 110 a-c, 155), computing device (e.g., 121-128), or serverassociated with a mesh network (e.g., 100).

In block 1402, the processor may receive a trigger designation. Thetrigger designation may identify at least one of a plurality ofpreestablished triggers used to initiate at least one action from themesh network.

In block 1404, the processor may cause a transmitter to transmit, fromthe processor to a node of the mesh network, a trigger subscriptionconfigured to cause hardware associated with at least one node withinthe mesh network to detect and report when the at least one of theplurality of preestablished triggers occurs. The trigger subscriptionmay include an update to a trigger list that identifies a designatednode configured to execute application logic for initiating at least oneaction from the mesh network.

In some embodiments, the processor may repeat any or all of theoperations in blocks 1402 and 1404 to repeatedly or continuously receivetrigger designations and transmit a trigger subscription.

FIG. 15 illustrates an embodiment method 1500 of example operations thatmay be performed as part of the method 1400 (FIG. 14 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-15 , the operations of method 1500 may be performed by aprocessor (e.g., 210) of a node (e.g., 110 a-c, 155), computing device(e.g., 121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 1404 (FIG. 14), the processor of a detecting node (e.g., 110 a-c, 155) may in block1502 determine the designated node within the mesh network designated tohandle operations for initiating the at least one other action forinclusion in the update to the trigger list. Then, in block 1504, theprocessor of the detecting node (e.g., 110 a-c, 155) may update thetrigger subscription to include the update to the trigger list.Following the operations of block 1504, the processor of the detectingnode (e.g., 110 a-c, 155) may follow the operations of block 1402 (FIG.14 ).

FIG. 16 illustrates an embodiment method 1600 of example operations thatmay be performed as part of the method 1400 (FIG. 14 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-16 , the operations of method 1600 may be performed by aprocessor (e.g., 210) of a node (e.g., 110 a-c, 155), computing device(e.g., 121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 1404 (FIG. 14), the processor of the detecting node (e.g., 110 a-c, 155) may, inblock 1602, transmit to a designated node within the mesh network,application logic associated with the at least one of the plurality ofpreestablished triggers. The application logic may be configured to beinitiated in response to receipt of an indication that the trigger wasdetected. Following the operations of block 1602, the processor of thedetecting node (e.g., 110 a-c, 155) may follow the operations of block1402 (FIG. 14 ).

FIG. 17 illustrates an embodiment method 1700 of example operations thatmay be performed as part of the method 1400 (FIG. 14 ) for distributingtrigger-based function execution in a mesh network. With reference toFIGS. 1-17 , the operations of method 1700 may be performed by aprocessor (e.g., 210) of a node (e.g., 110 a-c, 155), computing device(e.g., 121-128), or server associated with a mesh network (e.g., 100).

In some implementations following the operations of block 1404 (FIG. 14), the processor of the detecting node (e.g., 110 a-c, 155) may, inblock 1702, receive a task initiation in response to the at least one ofthe plurality of preestablished triggers being detected. Then, in block1704, the processor of the detecting node (e.g., 110 a-c, 155) mayexecute application logic for initiating at least one action from themesh network. The at least one action may be responsive to at least oneof the plurality of preestablished triggers being detected. Followingthe operations of block 1704, the processor of the detecting node (e.g.,110 a-c, 155) may follow the operations of block 1402 (FIG. 14 ).

Various embodiments illustrated and described are provided merely asexamples to illustrate various features of the claims. However, featuresshown and described with respect to any given embodiment are notnecessarily limited to the associated embodiment and may be used orcombined with other embodiments that are shown and described. Further,the claims are not intended to be limited by any one example embodiment.For example, one or more of the operations of the methods 800, 900,1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700 may be substituted for orcombined with one or more operations of the methods 800, 900, 1000,1100, 1200, 1300, 1400, 1500, 1600, 1700 and vice versa.

The various embodiments (including, but not limited to, embodimentsdiscussed above with reference to FIGS. 1-17 ), may be implemented inany of a variety of computing devices (e.g., a node), an example ofwhich is illustrated in FIG. 18 . The system 1800 includes a clock/resetcomponent 1802, a peripheral component interconnect (PCI) component1804, a central processing unit (CPU) media access control (MAC)component 1806, a direct memory access (DMA) engine component 1808, anda control and configuration component 1810. The system 1800 includes aplurality of processing blocks 1812 that implement a switch architecturethat could be partitioned and/or controlled by the various embodiments.In the illustrated example, the processing blocks 1812 each include orutilize a receiver MACs component 1814, an ingress pipeline component1816, a traffic manager component 1818, an egress pipeline component1820, and a transmission MAC component 1822.

The system 1800 illustrated in FIG. 18 further includes an integratedswitch management plane 1830 that includes a compiler or interpretercomponent 1832, an installer component 1834, a runtime manager component1836, a tunneler component 1838, and an error manager component 1840.The compiler or interpreter component 1832 may be configured to receiveand compile the code segments into domain-specific binary code that issuitable for execution on a packet processor, or via the runtime manager1836 and/or CPU MAC component 1806. The installer component 1834 may beconfigured to install the domain-specific binary code for execution viathe packet processor, or via the runtime manager 1836 and/or CPU MACcomponent 1806. As mentioned above, the efficient installation oflocally compiled domain-specific binary code enables the system toquickly and efficiently augment or alter the functionality of a deployednetwork component in real time, while in service. The runtime managercomponent 1826 may be configured to manage the runtime system orexecution environment. The tunneler component 1838 may be configured toestablish a high speed data forwarding tunnel for communicating with acontrol server. The error manager component 1840 may be configured toperform various error response operations.

FIG. 19 shows a component block diagram of an example client device.Various embodiments may be implemented on a variety of wireless devices(such the cell phone 121 client devices), an example of which isillustrated in FIG. 19 in the form of a smartphone 1900. The smartphone1900 may include a first system-on-chip (SOC) 1902 (such as a SOC-CPU)coupled to a second SOC 1904 (such as a 5G capable SOC). The first andsecond SOCs 1902, 1904 may be coupled to internal memory 1906, 1916, adisplay 1912, and to a speaker 1914. Additionally, the smartphone 1900may include an antenna 1924 for sending and receiving electromagneticradiation that may be connected to a wireless data link or cellulartelephone transceiver 1908 coupled to one or more processors in thefirst or second SOCs 1902, 1904. Smartphones 1900 typically also includemenu selection buttons or rocker switches 1920 for receiving userinputs.

A typical smartphone 1900 also includes a sound encoding/decoding(CODEC) circuit 1910, which digitizes sound received from a microphoneinto data packets suitable for wireless transmission and decodesreceived sound data packets to generate analog signals that are providedto the speaker to generate sound. Also, one or more of the processors inthe first and second SOCs 1902, 1904, wireless transceiver 1908 andCODEC 1910 may include a digital signal processor (DSP) circuit (notshown separately).

The processors of the smartphone 1900 may be any programmablemicroprocessor, microcomputer or multiple processor chip or chips thatcan be configured by software instructions (applications) to perform avariety of functions, including the functions of the variousimplementations described below. In some mobile devices, multipleprocessors may be provided, such as one processor within asystem-on-chip (SOC) dedicated to wireless communication functions andone processor within another SOC dedicated to running otherapplications. Typically, software applications may be stored in thememory 1906, 1916 before they are accessed and loaded into theprocessor. The processors may include internal memory sufficient tostore the application software instructions.

Various embodiments (including, but not limited to, embodimentsdiscussed above with reference to FIGS. 1-19 ) may be implemented on anyof a variety of commercially available server devices, such as thecloud-based node 155 illustrated in FIG. 1 . The server 155 illustratedin FIG. 1 and described with regard to FIGS. 5-7 may include the same orsimilar elements as the server 2000. The server 2000 may include aprocessor 2001 coupled to volatile memory 2002 and a large capacitynonvolatile memory, such as a disk drive 2003. The server 2000 may alsoinclude a floppy disc drive, compact disc (CD) or DVD disc drive 2004coupled to the processor 2001. The server 2000 may also include networkaccess ports 2006 coupled to the processor 2001 for establishing dataconnections with a network connection circuit 2005 and a communicationnetwork (e.g., IP network) coupled to other communication system networkelements.

The processors 210, 1806, 1902, 1904, 2001 may be any programmablemicroprocessor, microcomputer or multiple processor chip or chips thatcan be configured by software instructions (applications) to perform avariety of functions, including the functions of the various embodimentsdescribed above. In some devices, multiple processors may be provided,such as one processor dedicated to wireless communication functions andone processor dedicated to running other applications. Typically,software applications may be stored in the internal memory before theyare accessed and loaded into the processors 210, 1806, 1902, 1904, 2001.The processors 210, 1806, 1902, 1904, 2001 may include internal memorysufficient to store the application software instructions. In manydevices, the internal memory may be a volatile or nonvolatile memory,such as flash memory, or a mixture of both. For the purposes of thisdescription, a general reference to memory refers to memory accessibleby the processors 210, 1806, 1902, 1904, 2001 including internal memoryor removable memory plugged into the device and memory within theprocessors 210, 1806, 1902, 1904, 2001 themselves.

The foregoing method descriptions and the process flow diagrams areprovided merely as illustrative examples and are not intended to requireor imply that the steps of the various embodiments must be performed inthe order presented. As will be appreciated by one of skill in the artthe order of steps in the foregoing embodiments may be performed in anyorder. Words such as “thereafter,” “then,” “next,” etc. are not intendedto limit the order of the steps; these words are simply used to guidethe reader through the description of the methods. Further, anyreference to claim elements in the singular, for example, using thearticles “a,” “an” or “the” is not to be construed as limiting theelement to the singular.

As used in this application, the terms “component,” “module,” “system,”and the like are intended to include a computer-related entity, such as,but not limited to, hardware, firmware, a combination of hardware andsoftware, software, or software in execution, which are configured toperform particular operations or functions. For example, a module maybe, but is not limited to, a process running on a processor, aprocessor, an object, an executable, a thread of execution, a program,or a computer. By way of illustration, both an application running on acomputing device and the computing device may be referred to as amodule. One or more modules may reside within a process or thread ofexecution and a module may be localized on one processor or core ordistributed between two or more processors or cores. In addition, thesemodules may execute from various non-transitory processor-readablestorage media having various instructions or data structures storedthereon. Modules may communicate by way of local or remote processes,function or procedure calls, electronic signals, data packets, memoryread/writes, and other known network, computer, processor, or processrelated communication methodologies.

The various illustrative logical blocks, modules, circuits, andalgorithm steps described in connection with the embodiments disclosedherein may be implemented as electronic hardware, computer software, orcombinations of both. To clearly illustrate this interchangeability ofhardware and software, various illustrative components, blocks, modules,circuits, and steps have been described above generally in terms oftheir functionality. Whether such functionality is implemented ashardware or software depends upon the particular application and designconstraints imposed on the overall system. Skilled artisans mayimplement the described functionality in varying ways for eachparticular application, but such implementation decisions should not beinterpreted as causing a departure from the scope of the presentinvention.

The hardware used to implement the various illustrative logics, logicalblocks, modules, and circuits described in connection with the aspectsdisclosed herein may be implemented or performed with a general purposeprocessor, a digital signal processor (DSP), an application specificintegrated circuit (ASIC), a field programmable gate array (FPGA) orother programmable logic device, discrete gate or transistor logic,discrete hardware components, or any combination thereof designed toperform the functions described herein. A general-purpose processor maybe a microprocessor, but, in the alternative, the processor may be anyconventional processor, controller, microcontroller, or state machine. Aprocessor may also be implemented as a combination of computing devices,e.g., a combination of a DSP and a microprocessor, a plurality ofmicroprocessors, one or more microprocessors in conjunction with a DSPcore, or any other such configuration. Alternatively, some steps ormethods may be performed by circuitry that is specific to a givenfunction.

In one or more exemplary aspects, the functions described may beimplemented in hardware, software, firmware, or any combination thereof.If implemented in software, the functions may be stored as one or moreinstructions or code on a non-transitory computer-readable storagemedium or non-transitory processor-readable storage medium. The steps ofa method or algorithm disclosed herein may be embodied in aprocessor-executable software module and/or processor-executableinstructions, which may reside on a non-transitory computer-readable ornon-transitory processor-readable storage medium. Non-transitoryserver-readable, computer-readable or processor-readable storage mediamay be any storage media that may be accessed by a computer or aprocessor. By way of example but not limitation, such non-transitoryserver-readable, computer-readable or processor-readable storage mediamay include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical diskstorage, magnetic disk storage or other magnetic storage devices, or anyother medium that may be used to store desired program code in the formof instructions or data structures and that may be accessed by acomputer. Disk and disc, as used herein, includes compact disc (CD),laser disc, optical disc, DVD, floppy disk, and Blu-ray disc where disksusually reproduce data magnetically, while discs reproduce dataoptically with lasers. Combinations of the above are also includedwithin the scope of non-transitory server-readable, computer-readableand processor-readable storage media. Additionally, the operations of amethod or algorithm may reside as one or any combination or set of codesand/or instructions on a non-transitory server-readable,processor-readable medium and/or computer-readable storage medium, whichmay be incorporated into a computer program product.

The preceding description of the disclosed embodiments is provided toenable any person skilled in the art to make or use the presentinvention. Various modifications to these embodiments will be readilyapparent to those skilled in the art, and the generic principles definedherein may be applied to other embodiments without departing from thespirit or scope of the invention. Thus, the present invention is notintended to be limited to the embodiments shown herein but is to beaccorded the widest scope consistent with the following claims and theprinciples and novel features disclosed herein.

What is claimed is:
 1. A method for distributing trigger-based functionexecution in a mesh network with a plurality of nodes, the methodcomprising: receiving, at a processor of a computing device, a triggerdesignation, where the trigger designation identifies at least one of aplurality of preestablished triggers used to initiate at least oneaction controlling an operation associated with a client deviceconnected to the mesh network; and transmitting, from the processor tothe plurality of nodes, a trigger subscription configured to causehardware associated with each of the plurality of nodes to be configuredto detect and report when the at least one of the plurality ofpreestablished triggers is detected by any one of the plurality ofnodes, wherein the trigger subscription includes an update to a triggerlist that identifies a designated node among the plurality of nodes thatis configured to execute application logic for initiating the at leastone action controlling the operation associated with the client deviceconnected to the mesh network, wherein the client device is remote fromthe designated node.
 2. The method of claim 1, further comprising:determining, at the processor, the designated node within the meshnetwork designated to handle operations for initiating the at least oneaction for inclusion in the update to the trigger list; and updating thetrigger subscription to include the update to the trigger list.
 3. Themethod of claim 1, further comprising: transmitting, from the processorto the designated node within the mesh network, application logicassociated with the at least one of the plurality of preestablishedtriggers, wherein the application logic is configured to be initiated inresponse to receipt of an indication that a trigger was detected.
 4. Themethod of claim 1, further comprising: receiving, at the processor, atask initiation in response to the at least one of the plurality ofpreestablished triggers being detected; and executing, by the processor,application logic for initiating the at least one action from the meshnetwork, wherein the at least one action is responsive to at least oneof the plurality of preestablished triggers being detected.
 5. Acomputing device connected to other devices operating with the computingdevice as a plurality of nodes in a mesh network, comprising: atransceiver; and a processor coupled to the transceiver, wherein theprocessor is configured with processor-executable instructions toperform operations for distributing trigger-based function executionfrom the computing device, the operations comprising: receiving, usingthe transceiver, a trigger designation, wherein the trigger designationidentifies at least one of a plurality of preestablished triggers usedto initiate at least one action controlling an operation associated witha client device connected to from the mesh network; and transmitting,using the transceiver to the plurality of nodes in the mesh network, atrigger subscription configured to cause hardware associated with atleast one node within the mesh network to detect and report when the atleast one of the plurality of preestablished triggers occurs, whereinthe trigger subscription includes an update to a trigger list thatidentifies a designated node configured to execute application logic forinitiating the at least one action controlling the operation associatedwith the client device connected to the mesh network, wherein the clientdevice is remote from the designated node.
 6. The computing device ofclaim 5, wherein the processor is configured with processor-executableinstructions to perform operations further comprising: determining thedesignated node within the mesh network designated to handle operationsfor initiating the at least one action for inclusion in the update tothe trigger list; and updating the trigger subscription to include theupdate to the trigger list.
 7. The computing device of claim 5, whereinthe processor is configured with processor-executable instructions toperform operations further comprising: transmitting, using thetransceiver to the designated node within the mesh network, applicationlogic associated with the at least one of the plurality ofpreestablished triggers, wherein the application logic is configured tobe initiated in response to receipt of an indication that a trigger wasdetected.
 8. The computing device of claim 5, wherein the processor isconfigured with processor-executable instructions to perform operationsfurther comprising: receiving, using the transceiver, a task initiationin response to the at least one of the plurality of preestablishedtriggers being detected; and executing application logic for initiatingthe at least one action from the mesh network, wherein the at least oneaction is responsive to at least one of the plurality of preestablishedtriggers being detected.
 9. A non-transitory processor-readable storagemedium having stored thereon processor-executable instructionsconfigured to cause a processor to perform operations for distributingtrigger-based function execution from a detecting node among a pluralityof nodes in a mesh network, the operations comprising: receiving atrigger designation, where the trigger designation identifies at leastone of a plurality of preestablished triggers used to initiate at leastone action controlling an operation associated with a client deviceconnected to from the mesh network; and transmitting to a node of themesh network a trigger subscription configured to cause hardwareassociated with at least one node within the mesh network to detect andreport when the at least one of the plurality of preestablished triggersoccurs, wherein the trigger subscription includes an update to a triggerlist that identifies a designated node configured to execute applicationlogic for initiating the at least one action controlling the operationassociated with the client device connected to the mesh network, whereinthe client device is remote from the designated node.
 10. Thenon-transitory processor-readable storage medium of claim 9, wherein thestored processor-executable instructions are configured to cause theprocessor to perform operations further comprising: determining thedesignated node within the mesh network designated to handle operationsfor initiating the at least one action for inclusion in the update tothe trigger list; and updating the trigger subscription to include theupdate to the trigger list.
 11. The non-transitory processor-readablestorage medium of claim 9, wherein the stored processor-executableinstructions are configured to cause the processor to perform operationsfurther comprising: transmitting, to the designated node within the meshnetwork, application logic associated with the at least one of theplurality of preestablished triggers, wherein the application logic isconfigured to be initiated in response to receipt of an indication thata trigger was detected.
 12. The non-transitory processor-readablestorage medium of claim 9, wherein the stored processor-executableinstructions are configured to cause the processor to perform operationsfurther comprising: receiving a task initiation in response to the atleast one of the plurality of preestablished triggers being detected;and executing application logic for initiating the at least one actionfrom the mesh network, wherein the at least one action is responsive toat least one of the plurality of preestablished triggers being detected.